package JavaSE.d5;

import java.nio.file.Path;

/*
主要解析路径和路径字符串，和路径真实存在否无关
针对如下Path类的方法进行测试练习
public Path getFileName()
public int getNameCount()
public Path getName(int index)
public Path getParent()
public Path getRoot()
public boolean isAbsolute()
public Path resolve(String path)
public Path resolveSibling(String path)
public Path toAbsolutePath()
 */
public class Test18 {
    public static void main(String[] args) {
        Path p=Path.of("100.text");//Path.Of("通过路径字符串构造对象");
        Path p2=Path.of("C:\\Users\\a\\Desktop\\新项目\\创想软件\\Java");
        Path fileName = p.getFileName();//通过getFileName获取文件名，类型Path
        Path fileName1 = p2.getFileName();
        System.out.println(fileName);
        System.out.println(fileName1);
        System.out.println(p2.getNameCount());//获得路径中文件的数目
        System.out.println(p2.getName(1));//获得路径中指定位置的文件名
        System.out.println(p.getRoot());//获取根路径
        System.out.println(p2.getRoot());
        System.out.println(p.isAbsolute());//判断是否是绝对路径
        System.out.println(p2.isAbsolute());
        System.out.println(p.getParent());//获取父目录
        System.out.println(p2.getParent());//获取父目录
        p= p.toAbsolutePath();
        System.out.println(p);//转换为绝对路径

        System.out.println("p2重新定向定的路径resolve()的参数可以是Path对象         "+p2.resolve(p));//将p2重新定向定的路径resolve()的参数可以是Path对象，也可以是字符串路径
        System.out.println(p2.resolve("C:\\Users\\a\\Desktop\\新项目\\创想软件\\Java"));

        p=Path.of("新项目\\创想软件\\Java");
        System.out.println("父路径保持不变，拼接参数p合成新路径   " +p2.resolve(p));//父路径保持不变，拼接参数p合成新路径

        p=Path.of("100.file");
        p=p.toAbsolutePath();
        System.out.println(p);
        p2.resolve("C:\\Users\\a\\Desktop\\新项目\\创想软件\\Java");
        System.out.println(p2);
        System.out.println(p.relativize(p2));//获取两个路径之间的相对路径
        System.out.println(p2.relativize(p));//获取两个路径之间的相对路径
    }
}
